#!/bin/bash

if (( $# != 1 ))
then
    echo "Usage: $0 <kernel source dir>"
    exit 1
fi

if [[ ! -d $1 ]]
then
    echo "Usage: $0 <kernel source dir>"
    exit 2
fi

DB_FILE=cscope.files
DB_DIR=`pwd`/db
LINUX_DIR=`pwd`/$1

if [[ -d $DB_DIR ]]
then
    echo "delete old db dir?"
    read answer
    if [[ $answer == "y" ]]
    then
        rm -rvf $DB_DIR
    else
        exit 3
    fi
fi

mkdir -pv $DB_DIR

cd /

find -L $LINUX_DIR \
    -path "$LINUX_DIR/arch/*" ! -path "$LINUX_DIR/arch/mips*" -prune -o \
    -path "$LINUX_DIR/block/*" -prune -o \
    -path "$LINUX_DIR/crypto/*" -prune -o \
    -path "$LINUX_DIR/drivers/*" -prune -o \
    -path "$LINUX_DIR/Documentation/*" -prune -o \
    -path "$LINUX_DIR/firmware/*" -prune -o \
    -path "$LINUX_DIR/fs/*" -prune -o \
    -path "$LINUX_DIR/include/asm-*" ! -path "$LINUX_DIR/include/asm-mips*" -prune -o \
    -path "$LINUX_DIR/init/*" \
    -path "$LINUX_DIR/ipc/*" \
    -path "$LINUX_DIR/kernel/*" \
    -path "$LINUX_DIR/lib/*" \
    -path "$LINUX_DIR/ltt/*" \
    -path "$LINUX_DIR/mm/*" \
    -path "$LINUX_DIR/net/*" \
    -path "$LINUX_DIR/samples/*" -prune -o \
    -path "$LINUX_DIR/scripts/*" -prune -o \
    -path "$LINUX_DIR/security/*" -prune -o \
    -path "$LINUX_DIR/sound/*" -prune -o \
    -path "$LINUX_DIR/tools/*" -prune -o \
    -path "$LINUX_DIR/usr/*" -prune -o \
    -path "$LINUX_DIR/virt/*" -prune -o \
                                        \
    -path "$LINUX_DIR/.pc/*" -prune -o \
    -path "$LINUX_DIR/db/*" -prune -o \
    -path "$LINUX_DIR/tmp/*" -prune -o \
    -path "$LINUX_DIR/wrlinux_quilt_patches/*" -prune -o \
    -name "*.[cChHsSiIxX]" -print >> $DB_DIR/$DB_FILE

cd $DB_DIR
cscope -bqkU -i $DB_FILE
ctags -L $DB_FILE
cd -

